<!--SIF Implementation Specification 2.2-6 (March 17, 2008)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://www.sifinfo.org/infrastructure/2.x" xmlns:sif="http://www.sifinfo.org/infrastructure/2.x" elementFormDefault="qualified">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="imports/xml/xml.xsd" />
  <xs:complexType name="SIF_ZoneStatusType">
    <xs:annotation>
      <xs:documentation>
	The SIF_ZoneStatus object is an object that is implicitly provided by all Zone Integration Servers to provide
	information about the ZIS. Zone Integration Servers MUST provide this object.
</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_Name" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The descriptive name for the zone.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Icon" minOccurs="0" type="xs:anyURI">
        <xs:annotation>
          <xs:documentation>
	HTTP URL referencing an icon for graphical representation of the ZIS/Zone.
	Should range from 16x16 pixels to 128x128 pixels and be of an image MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF).
	Agents may optionally follow the more restrictive guidelines at [FAVICON].
</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Vendor" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Name" minOccurs="0" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The name of the company that wrote the ZIS.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_Product" minOccurs="0" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The product name assigned by the vendor to identify this ZIS.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_Version" minOccurs="0" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The version of the vendor's product—not necessarily the SIF version.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Providers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Provider" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_ExtendedQuerySupport" minOccurs="0" type="xs:boolean" />
                              <xs:element name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being provided by this SIF node.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that is providing objects. This is the agent or ZIS identifier that would appear in the SIF_SourceId field of any SIF_Header created by the SIF node.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Subscribers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Subscriber" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being subscribed to by this SIF node.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that is subscribing to the object events. This is the agent or ZIS identifier that would appear in the SIF_SourceId field of any SIF_Header created by the SIF node.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_AddPublishers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Publisher" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being published by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can publish the SIF_Event. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_ChangePublishers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Publisher" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being published by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can publish the SIF_Event. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_DeletePublishers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Publisher" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being published by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can publish the SIF_Event. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Responders" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Responder" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_ExtendedQuerySupport" minOccurs="0" type="xs:boolean" />
                              <xs:element name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object for which the agent can respond to requests.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can respond. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Requesters" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Requester" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_ExtendedQuerySupport" minOccurs="0" type="xs:boolean" />
                              <xs:element name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being requested by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can request an object. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SIFNodes" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_SIFNode" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Name" minOccurs="0" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>The descriptive name of the SIF node (i.e. Ramsey Food Services).</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_Icon" minOccurs="0" type="xs:anyURI">
                    <xs:annotation>
                      <xs:documentation>
	HTTP URL referencing an icon for graphical representation of the application/agent.
	Should range from 16x16 pixels to 128x128 pixels and be of an image MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF).
	Agents may optionally follow the more restrictive guidelines at [FAVICON].
</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_NodeVendor" minOccurs="0">
                    <xs:simpleType>
                      <xs:restriction base="xs:normalizedString">
                        <xs:annotation>
                          <xs:documentation>The vendor of the SIF agent.</xs:documentation>
                        </xs:annotation>
                        <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="SIF_NodeVersion" minOccurs="0">
                    <xs:simpleType>
                      <xs:restriction base="xs:normalizedString">
                        <xs:annotation>
                          <xs:documentation>
	The agent version number.  The format of this field is undefined, but it should
	match the format used in the agent's conformance statement, if the agent is SIF Certified.
</xs:documentation>
                        </xs:annotation>
                        <xs:maxLength value="32" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="SIF_Application" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Vendor" minOccurs="0">
                          <xs:simpleType>
                            <xs:restriction base="xs:normalizedString">
                              <xs:annotation>
                                <xs:documentation>The name of the company of the product that this agent supports.</xs:documentation>
                              </xs:annotation>
                              <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:element>
                        <xs:element name="SIF_Product" minOccurs="0">
                          <xs:simpleType>
                            <xs:restriction base="xs:normalizedString">
                              <xs:annotation>
                                <xs:documentation>The name of the product that this agent supports.</xs:documentation>
                              </xs:annotation>
                              <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:element>
                        <xs:element name="SIF_Version" minOccurs="0">
                          <xs:simpleType>
                            <xs:restriction base="xs:normalizedString">
                              <xs:annotation>
                                <xs:documentation>The version of the product. This field is informative only.</xs:documentation>
                              </xs:annotation>
                              <xs:maxLength value="32" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="SIF_SourceId" minOccurs="0">
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:annotation>
                          <xs:documentation>The agent or ZIS identifier. This is the same value that the SIF node would place in any SIF_Header that it would create.</xs:documentation>
                        </xs:annotation>
                        <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="SIF_Mode" minOccurs="0">
                    <xs:annotation>
                      <xs:documentation>Specifies the communication mode (Pull or Push) as chosen by the message sender.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="Push" />
                        <xs:enumeration value="Pull" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="SIF_Protocol" minOccurs="0" type="sif:SIF_ProtocolType">
                    <xs:annotation>
                      <xs:documentation>Describes the currently active protocol that the SIF node is using to communicate with the ZIS.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_VersionList" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Version" minOccurs="0" maxOccurs="unbounded" type="sif:VersionWithWildcardsType">
                          <xs:annotation>
                            <xs:documentation>This is the version or versions of the SIF Implementation Specification that define(s) the messages the SIF node can receive. 
For agents, this information was communicated when the SIF node registered with the ZIS.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="SIF_AuthenticationLevel" minOccurs="0" type="sif:SIF_AuthenticationLevelType">
                    <xs:annotation>
                      <xs:documentation>This is the level of authentication that the SIF node supports when it wants to communicate via a secure channel.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_EncryptionLevel" minOccurs="0" type="sif:SIF_EncryptionLevelType">
                    <xs:annotation>
                      <xs:documentation>This is the level of encryption that the SIF node supports when it wants to communicate via a secure channel.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_MaxBufferSize" minOccurs="0" type="xs:unsignedInt">
                    <xs:annotation>
                      <xs:documentation>Specifies that the ZIS should never send packets larger than this value. Query responses from other providers are controlled by the SIF_MaxBufferSize attribute in the SIF_Request message.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_Sleeping" minOccurs="0">
                    <xs:annotation>
                      <xs:documentation>This element shows whether the SIF node is ready to process messages.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="No">
                          <xs:annotation>
                            <xs:documentation>The SIF node is ready to process messages</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="Yes">
                          <xs:annotation>
                            <xs:documentation>The SIF node is sleeping and cannot process messages</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Type" use="required">
                  <xs:annotation>
                    <xs:documentation>
	The type of the node registered with the ZIS.  Note that ZIS is forward-looking and not used currently; all information about this
	Zone/ZIS is contained outside SIF_SIFNodes.
</xs:documentation>
                  </xs:annotation>
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:enumeration value="Agent" />
                      <xs:enumeration value="ZIS" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SupportedAuthentication" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ProtocolName" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Describes a particular authentication protocol supported.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="X.509" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SupportedProtocols" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Protocol" minOccurs="0" maxOccurs="unbounded" type="sif:SIF_ProtocolType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SupportedVersions" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Version" minOccurs="0" maxOccurs="unbounded" type="sif:VersionType">
              <xs:annotation>
                <xs:documentation>Lists a specific SIF Implementation Specification version.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_AdministrationURL" minOccurs="0" type="xs:anyURI">
        <xs:annotation>
          <xs:documentation>Should a ZIS vendor provide an administration interface for the zone via a URL, the ZIS can make the URL available in SIF_ZoneStatus. Agent administrators can use the URL to access zone administration features, should they have permission to do so.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType" />
      <xs:element name="SIF_Metadata" minOccurs="0" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" type="sif:SIF_ExtendedElementsType" />
    </xs:sequence>
    <xs:attribute name="ZoneId" use="required" type="xs:token">
      <xs:annotation>
        <xs:documentation>
	The identifier for this Zone.
	It is the same as the SIF_SourceId that the ZIS would place in any SIF_Header that it creates.
</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="SIF_ZoneStatus" type="sif:SIF_ZoneStatusType" />

  <xs:complexType name="SIF_ZoneStatusInfrastructureType">
    <xs:annotation>
      <xs:documentation>
	The SIF_ZoneStatus object is an object that is implicitly provided by all Zone Integration Servers to provide
	information about the ZIS. Zone Integration Servers MUST provide this object.
</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The descriptive name for the zone.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Icon" minOccurs="0" type="xs:anyURI">
        <xs:annotation>
          <xs:documentation>
	HTTP URL referencing an icon for graphical representation of the ZIS/Zone.
	Should range from 16x16 pixels to 128x128 pixels and be of an image MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF).
	Agents may optionally follow the more restrictive guidelines at [FAVICON].
</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Vendor" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Name" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The name of the company that wrote the ZIS.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_Product" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The product name assigned by the vendor to identify this ZIS.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_Version" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The version of the vendor's product—not necessarily the SIF version.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Providers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Provider" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_ExtendedQuerySupport" type="xs:boolean" />
                              <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being provided by this SIF node.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that is providing objects. This is the agent or ZIS identifier that would appear in the SIF_SourceId field of any SIF_Header created by the SIF node.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Subscribers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Subscriber" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being subscribed to by this SIF node.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that is subscribing to the object events. This is the agent or ZIS identifier that would appear in the SIF_SourceId field of any SIF_Header created by the SIF node.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_AddPublishers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Publisher" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being published by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can publish the SIF_Event. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_ChangePublishers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Publisher" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being published by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can publish the SIF_Event. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_DeletePublishers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Publisher" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being published by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can publish the SIF_Event. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Responders" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Responder" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_ExtendedQuerySupport" type="xs:boolean" />
                              <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object for which the agent can respond to requests.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can respond. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Requesters" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Requester" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_ExtendedQuerySupport" type="xs:boolean" />
                              <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being requested by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can request an object. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SIFNodes" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_SIFNode" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Name" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>The descriptive name of the SIF node (i.e. Ramsey Food Services).</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_Icon" minOccurs="0" type="xs:anyURI">
                    <xs:annotation>
                      <xs:documentation>
	HTTP URL referencing an icon for graphical representation of the application/agent.
	Should range from 16x16 pixels to 128x128 pixels and be of an image MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF).
	Agents may optionally follow the more restrictive guidelines at [FAVICON].
</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_NodeVendor" minOccurs="0">
                    <xs:simpleType>
                      <xs:restriction base="xs:normalizedString">
                        <xs:annotation>
                          <xs:documentation>The vendor of the SIF agent.</xs:documentation>
                        </xs:annotation>
                        <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="SIF_NodeVersion" minOccurs="0">
                    <xs:simpleType>
                      <xs:restriction base="xs:normalizedString">
                        <xs:annotation>
                          <xs:documentation>
	The agent version number.  The format of this field is undefined, but it should
	match the format used in the agent's conformance statement, if the agent is SIF Certified.
</xs:documentation>
                        </xs:annotation>
                        <xs:maxLength value="32" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="SIF_Application" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Vendor">
                          <xs:simpleType>
                            <xs:restriction base="xs:normalizedString">
                              <xs:annotation>
                                <xs:documentation>The name of the company of the product that this agent supports.</xs:documentation>
                              </xs:annotation>
                              <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:element>
                        <xs:element name="SIF_Product">
                          <xs:simpleType>
                            <xs:restriction base="xs:normalizedString">
                              <xs:annotation>
                                <xs:documentation>The name of the product that this agent supports.</xs:documentation>
                              </xs:annotation>
                              <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:element>
                        <xs:element name="SIF_Version">
                          <xs:simpleType>
                            <xs:restriction base="xs:normalizedString">
                              <xs:annotation>
                                <xs:documentation>The version of the product. This field is informative only.</xs:documentation>
                              </xs:annotation>
                              <xs:maxLength value="32" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="SIF_SourceId">
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:annotation>
                          <xs:documentation>The agent or ZIS identifier. This is the same value that the SIF node would place in any SIF_Header that it would create.</xs:documentation>
                        </xs:annotation>
                        <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="SIF_Mode">
                    <xs:annotation>
                      <xs:documentation>Specifies the communication mode (Pull or Push) as chosen by the message sender.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="Push" />
                        <xs:enumeration value="Pull" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="SIF_Protocol" minOccurs="0" type="sif:SIF_ProtocolType">
                    <xs:annotation>
                      <xs:documentation>Describes the currently active protocol that the SIF node is using to communicate with the ZIS.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_VersionList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Version" maxOccurs="unbounded" type="sif:VersionWithWildcardsType">
                          <xs:annotation>
                            <xs:documentation>This is the version or versions of the SIF Implementation Specification that define(s) the messages the SIF node can receive. 
For agents, this information was communicated when the SIF node registered with the ZIS.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="SIF_AuthenticationLevel" minOccurs="0" type="sif:SIF_AuthenticationLevelType">
                    <xs:annotation>
                      <xs:documentation>This is the level of authentication that the SIF node supports when it wants to communicate via a secure channel.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_EncryptionLevel" minOccurs="0" type="sif:SIF_EncryptionLevelType">
                    <xs:annotation>
                      <xs:documentation>This is the level of encryption that the SIF node supports when it wants to communicate via a secure channel.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_MaxBufferSize" type="xs:unsignedInt">
                    <xs:annotation>
                      <xs:documentation>Specifies that the ZIS should never send packets larger than this value. Query responses from other providers are controlled by the SIF_MaxBufferSize attribute in the SIF_Request message.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_Sleeping">
                    <xs:annotation>
                      <xs:documentation>This element shows whether the SIF node is ready to process messages.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="No">
                          <xs:annotation>
                            <xs:documentation>The SIF node is ready to process messages</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="Yes">
                          <xs:annotation>
                            <xs:documentation>The SIF node is sleeping and cannot process messages</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Type" use="required">
                  <xs:annotation>
                    <xs:documentation>
	The type of the node registered with the ZIS.  Note that ZIS is forward-looking and not used currently; all information about this
	Zone/ZIS is contained outside SIF_SIFNodes.
</xs:documentation>
                  </xs:annotation>
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:enumeration value="Agent" />
                      <xs:enumeration value="ZIS" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SupportedAuthentication" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ProtocolName" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Describes a particular authentication protocol supported.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="X.509" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SupportedProtocols">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Protocol" maxOccurs="unbounded" type="sif:SIF_ProtocolType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SupportedVersions">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Version" maxOccurs="unbounded" type="sif:VersionType">
              <xs:annotation>
                <xs:documentation>Lists a specific SIF Implementation Specification version.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_AdministrationURL" minOccurs="0" type="xs:anyURI">
        <xs:annotation>
          <xs:documentation>Should a ZIS vendor provide an administration interface for the zone via a URL, the ZIS can make the URL available in SIF_ZoneStatus. Agent administrators can use the URL to access zone administration features, should they have permission to do so.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType" />
      <xs:element name="SIF_Metadata" minOccurs="0" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" type="sif:SIF_ExtendedElementsType" />
    </xs:sequence>
    <xs:attribute name="ZoneId" use="required" type="xs:token">
      <xs:annotation>
        <xs:documentation>
	The identifier for this Zone.
	It is the same as the SIF_SourceId that the ZIS would place in any SIF_Header that it creates.
</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

</xs:schema>